Electronic document editors are widely used in homes and businesses today. Familiar examples of these editors include word processing applications that operate on personal computers (PCs) and note-taking applications that operate on personal data assistants (PDAs). These applications strive to replace paper as the simplest means to record and communicate information. However, to replace and enhance paper's utility, the electronic document editor must allow the user to place document objects on a page and to edit, move, resize, and add objects, while ensuring that the user can clearly view the individual objects. Also, unlike typical word processors, a free-form document editor that allows adding, editing, and navigating document objects in two dimensions more closely models paper's utility.
One function that an free-form electronic document editor should have to replace and enhance paper's utility is the capability to present to a user through a user interface the boundaries of a document object. A document object contains content a user has grouped together. This content may include text entered by a keyboard or similar device, handwriting entered with a stylus or similar device, a drawing, or a combination of these items. Typically, a word processor contains content in one dimension. Content is usually entered onto a page beginning at the top left-hand corner and moving in a line to the lower right-hand corner of the page. In contrast, a free-form document editor may have document objects, islands of content that can be added anywhere on the two dimensional surface of the page. As such, a user needs to know the boundaries of these islands of content to facilitate editing the content, adding additional document objects, or merging two or more document objects together.
For example, a user may wish to add content to the end of a document object. A membrane, or container, may define the boundary of the document object. The user may need the document editor to distinguish when a new document object is being created below the existing document object or when content is being added to the existing document object. The user may also need the user interface, such as a display from a monitor or tablet, to indicate if content is being added to the existing document object or a new document object is being created.
As another example, in a free-form document editor, a user can drag document objects about a page. A user may need the user interface to indicate when content from one document object can be dragged and dropped into another object.
Some word processing programs allow users to place text boxes on a page. These boxes may display a rectangular frame around the box. This rectangular box can serve as a container for the text object. However, these boxes cannot be readily merged together. Also, these boxes cannot grow to incorporate content that may be added within a region adjacent to the text box, in other words, these existing containers cannot indicate to a user if content is being added to the existing document object or a new document object is being created. In the case of text boxes, whenever an insertion point (IP) is placed outside the rectangular frame, a new document object is created. The text boxes also fail to indicate to a user when that box is active, that is, when a user has placed an IP into the text box or when a cursor is placed over a text box. Finally, text boxes do not allow for navigating between content in two or more boxes or a text box and content on the rest of the page. When an IP is within a text box, a user cannot use arrow keys to navigate out of the box or to another text box.
What is needed is a capability of indicating to a user, through a user interface, the boundary of a document object. This capability should include indicating when an IP is within the boundary, such that content will be added to the document object, or when a cursor is over the document object. The boundary should also indicate to a user when content from one document object is being dragged and dropped into another object.